using System.Collections;
using DG.Tweening;
using UnityEngine;


/// <summary>
/// 可建造物体类 - 控制建造过程和状态
/// </summary>
public class Buildable : MonoBehaviour
{
    [Tooltip("使用消耗的资源数")]
    public int useNum = 1;
    
    public float duration = 5.0f; // 可调整的动画速度参数

    Material normalMaterial;//正常材质

    void Start()
    {
        normalMaterial = GetComponent<MeshRenderer>().material;
        GetComponent<MeshRenderer>().material = BuildManager.Instance.virtualMaterial;
    }

    /// <summary>
    /// 开始建造（初始化）
    /// </summary>
    public void StartBuild()
    {
        UIManager.Instance.AddStoneNum(-useNum);  // 扣除资源
        StartCoroutine(AnimateClip());
    }

    //建筑动画
    private IEnumerator AnimateClip()
    {
        float heightOffset = 0f;
        float targetHeight = 5f;

        float elapsedTime = 0f;
        GetComponent<MeshRenderer>().material = normalMaterial;
        while (elapsedTime < duration)
        {
            // 使用插值计算当前高度值
            heightOffset = Mathf.Lerp(0f, targetHeight, elapsedTime / duration);

            // 更新材质属性
            normalMaterial.SetFloat("_Clip", heightOffset);

            // 累计经过的时间
            elapsedTime += Time.deltaTime;
            yield return null;
        }

        // 确保最终值精确
        normalMaterial.SetFloat("_Clip", targetHeight);

        //镜头震动效果
        Camera.main.transform.DOShakePosition(.2f, .5f, 14, 90, false, true);
    }
}